package com.example.logaspect.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.ArrayList;
import java.util.List;

/**
 * 日志切面配置属性
 */
@Data
@ConfigurationProperties(prefix = "logging.aspect")
public class LogAspectProperties {

    /**
     * 是否启用日志切面
     */
    private boolean enabled = true;

    /**
     * 是否启用基于注解的日志切面
     */
    private boolean enableAnnotationAspect = true;

    /**
     * 是否启用全局日志切面（无需注解）
     */
    private boolean enableGlobalAspect = false;

    /**
     * 全局切面的切入点表达式
     */
    private String globalPointcut = "execution(* com.example..*.*(..))";

    /**
     * 是否记录方法入参
     */
    private boolean recordParams = true;

    /**
     * 是否记录方法返回值
     */
    private boolean recordResult = true;

    /**
     * 是否记录方法执行时间
     */
    private boolean recordExecutionTime = true;

    /**
     * 排除的包路径，这些包下的方法不会被记录日志
     */
    private List<String> excludePackages = new ArrayList<>();

    // Getters and Setters
}